import {config} from '../config.js'
const tips = {
  1: '抱歉，出现了一个错误',
  1005: 'appkey无效，请前往www.7yue.pro申请',
  3000: '期刊不存在'
}
class HTTP{
  request(params){
    if(!params.method){
      params.method = "GET";
    }
    wx.request({
      url: config.api_base_url + params.url,
      method: params.method,
      data: params.data,
      header: {
        'content-type': 'application/json',
        'appkey': config.appkey
      },
      success: (res) => {
        let code = res.statusCode.toString();
        // 一定要将code转换为string类型的，不然startsWith方法没法使用
        if(code.startsWith('2')){
          //如果状态码是以2开头的，调用传入的success函数
          if(params.success) params.success(res.data);
        }else{
          //状态码以非2开头的
          let error_code = res.data.error_code;
          this._show_error(error_code);
        }
      },
      fail: (err) => {
        //fail出现的错误和success中以非2开头的有区别
        //fail一般是网络断开等错误
        //而以非2开头的错误，如404等就可能是用户输错了访问路径，我觉得这样写代码非常规范
        this._show_error(1);
      }
    })
  }

  // show_error前面加的下划线是表示私有方法（是自己定义的规范，es6没有这样的语法规定）
  _show_error(error_code){
    if(!error_code){
      error_code = 1
    }
    const tip = tips[error_code];
    wx.showToast({
      title: tip?tip:tips[1],
      icon: 'none',
      duration: 2000
    })
  }
}
export {HTTP}